package com.zhiling.www.util;

import com.zhiling.www.entity.User;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;

//工具类：创建一个签证，及解析一个签证；
public class JwtUtils {

    private static String signature = "sea1130lsq";    //签名
    private static long ttl = 3600000; //有效期为一小时；单位毫秒

    //创建一个签证，
    public static String createJwt(User user) {
        long t = System.currentTimeMillis();  //当前时间；
        Date date = new Date(t);     //签发的时间；
        Date exp = new Date(t + ttl);  //过期的时间；

        JwtBuilder jb = Jwts.builder().setIssuedAt(date).setExpiration(exp)
                //负载信息，可以有多个
                .claim("userId", user.getUserId())
                .claim("userName", user.getUserName())
                .claim("userState", user.getUserState())
                .claim("phone", user.getPhone())
                //签名//签名加密
                .signWith(SignatureAlgorithm.HS256, signature);
        String str = jb.compact();
        return str;
    }

    //解析token
    public static Claims parseToken(String token) {
        Claims claims;
        try {
            claims = Jwts.parser().setSigningKey(signature).parseClaimsJws(token).getBody();
        } catch (Exception e) {
            return null;
        }
        return claims;
    }
}
